import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    book:{},
    cart:[]
  },
  mutations: {
    addBook(state,bk){
      let index=-1;
      for(let i=0;i<state.cart.length;i++){
        if(bk.id===state.cart[i].id){
          index=i;
          break;
        }
      }
      if(index>=0){
        if(bk.pnum>state.cart[index].number){
        state.cart[index].number++;
        state.cart[index].lineTotal+=bk.price;
        }  
      }else{
        bk['number']=1;
        bk['lineTotal']=bk.price;
        if(bk.pnum>0)
        state.cart.push(bk);
      }
    },
    delBook(state,index){
      state.cart.splice(index,1);
    },
    refresh(state,index){
      let book=state.cart[index]
      book.lineTotal=book.number*book.price
      state.cart.splice(index,1,book)
    }
  },
  actions: {
    addBook(context,bk){
      context.commit('addBook',bk)
    },
    delBook(context,index){
      context.commit('delBook',index)
    }
  },
  getters:{
    getCartNumberById(state){
      return function(id){
        let index=-1
        for (let i = 0; i < state.cart.length; i++) {
         if (id === state.cart[i].id) {
           index = i;
           break;
         }
       }
       if(index>=0){
         return state.cart[index].number;
       }else{
         return 0;
       }
      }
    },
    totalPrice(state) {
      var price_total = 0;
      for (var i = 0; i < state.cart.length; i++) {
        price_total +=
         state.cart[i].price * state.cart[i].number;
      }
      return price_total;
    },
    // 总数
    totalNumber(state) {
      var number_total = 0;
      for (var i = 0; i < state.cart.length; i++) {
        number_total += state.cart[i].number;
      }
      return number_total;
    },
  },
  modules: {
  }
})
